//============================================================================
// Name        : sdl_test.cpp
// Author      : 
// Version     :
// Copyright   : Your copyright notice
//============================================================================

#include <string>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include <SDL/SDL_mixer.h>

using namespace std;

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;

SDL_Surface *image = NULL;
SDL_Surface *screen     = NULL;

SDL_Event event;

SDL_Surface *load_image(std::string filename)
{
    SDL_Surface *loadedImage = NULL;
    SDL_Surface *optimizedImage = NULL;

    loadedImage = IMG_Load(filename.c_str());
    if(loadedImage != NULL){
        optimizedImage = SDL_DisplayFormat(loadedImage);
        SDL_FreeSurface(loadedImage);
    }
    return optimizedImage;
}

void apply_surface(int x, int y, SDL_Surface *src, SDL_Surface *dst)
{
    SDL_Rect offset;

    offset.x = x;
    offset.y = y;
    SDL_BlitSurface(src, NULL, dst, &offset);
}

bool init()
{
    if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
        return false;

    screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE);
    if(screen == NULL)
        return false;

    SDL_WM_SetCaption("Event test", NULL);

    return true;
}

bool load_files()
{
    image = load_image("./res/x.jpg");
    if(image == NULL)
        return false;
    return true;
}

void clean_up()
{
    SDL_FreeSurface(image);
    SDL_Quit();
}

int main(int argc, char **argv)
{
    bool quit = false;
    
    if(init() == false)
        return 1;
    if(load_files() == false)
        return 1;

    apply_surface(0, 0, image, screen);
    if(SDL_Flip(screen) == -1)
        return 1;

    //while(quit ? SDL_PollEvent(&event) : SDL_WaitEvent(&event))
    //    if(event.type == SDL_QUIT)
    //        quit = true;

    while(SDL_WaitEvent(&event)){
        if(event.type == SDL_QUIT)
            break;
    }

    clean_up();
    return 0;
}
